package com.cjjd.c.http;


import com.cjjd.c.bean.AdHotelBean;
import com.cjjd.c.bean.AddQrCodePayBean;
import com.cjjd.c.bean.AddressInfoBean;
import com.cjjd.c.bean.AddressListBean;
import com.cjjd.c.bean.AliOrderBean;
import com.cjjd.c.bean.CheckInDetailBean;
import com.cjjd.c.bean.CheckInItemBean;
import com.cjjd.c.bean.CheckOutBean;
import com.cjjd.c.bean.CheckoutItemBean;
import com.cjjd.c.bean.CityAdWrapperBean;
import com.cjjd.c.bean.CityBean;
import com.cjjd.c.bean.ContactBean;
import com.cjjd.c.bean.ContactInfoBean;
import com.cjjd.c.bean.CustomInfo;
import com.cjjd.c.bean.CustomerCardDiscountBean;
import com.cjjd.c.bean.CustomerHkGoldBean;
import com.cjjd.c.bean.ExchangeRecordsBean;
import com.cjjd.c.bean.HotelFacilityInfoBean;
import com.cjjd.c.bean.HotelFacilityShowModel;
import com.cjjd.c.bean.HotelListItemBean;
import com.cjjd.c.bean.HotelMobileAndTime;
import com.cjjd.c.bean.HotelQrCodeInfoBean;
import com.cjjd.c.bean.HttpResult;
import com.cjjd.c.bean.IntegralBean;
import com.cjjd.c.bean.IntegralItemBean;
import com.cjjd.c.bean.JudgeSuccessItemBean;
import com.cjjd.c.bean.JudgeWrapperBean;
import com.cjjd.c.bean.ListResult;
import com.cjjd.c.bean.LoginBean;
import com.cjjd.c.bean.MemberCardDetailItemBean;
import com.cjjd.c.bean.MemberCardItemBean;
import com.cjjd.c.bean.MessageItem;
import com.cjjd.c.bean.MobileCode;
import com.cjjd.c.bean.NearbyHotelWrapperBean;
import com.cjjd.c.bean.OrderBean;
import com.cjjd.c.bean.ProviceBean;
import com.cjjd.c.bean.ReceiptBean;
import com.cjjd.c.bean.ReceiptInfoBean;
import com.cjjd.c.bean.RegionBean;
import com.cjjd.c.bean.RoomOrderItembean;
import com.cjjd.c.bean.SaveOrderResultBean;
import com.cjjd.c.bean.SelectHomeDetailItemBean;
import com.cjjd.c.bean.SelectHomeItemBean;
import com.cjjd.c.bean.SelectHomeOrderDetailBean;
import com.cjjd.c.bean.SysMessageDetailBean;
import com.cjjd.c.bean.ToExchangeHkGoldBean;
import com.cjjd.c.bean.ToTipPayBean;
import com.cjjd.c.bean.TravellerInfoBean;
import com.cjjd.c.bean.TravellerListBean;
import com.cjjd.c.bean.UploadBean;
import com.cjjd.c.bean.WaitCheckOutTimeBean;
import com.cjjd.c.bean.WxLoginAccessTokenBean;
import com.cjjd.c.bean.WxPrepayBean;
import com.cjjd.c.bean.subscribe.BookOrderModel;
import com.cjjd.c.bean.subscribe.ChangeOrderBean;
import com.cjjd.c.bean.subscribe.DiffAmountBean;
import com.cjjd.c.bean.subscribe.GenBookOrderModel;
import com.cjjd.c.bean.subscribe.HotelCommentModel;
import com.cjjd.c.bean.subscribe.HotelCommentShowModel;
import com.cjjd.c.bean.subscribe.HotelDetailAndDevice;
import com.cjjd.c.bean.subscribe.HotelInfo;
import com.cjjd.c.bean.subscribe.HotelQuestionShowModel;
import com.cjjd.c.bean.subscribe.HotelRoomBaseFacilityBean;
import com.cjjd.c.bean.subscribe.HotelRoomShowModel;
import com.cjjd.c.bean.subscribe.HotelSelectModel;
import com.cjjd.c.bean.subscribe.NearbyHotelShowModel;
import com.cjjd.c.bean.subscribe.NomalBean;
import com.cjjd.c.bean.subscribe.QuestionModel;
import com.cjjd.c.bean.subscribe.SaveOrderChangeBean;

import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Multipart;
import retrofit2.http.POST;
import retrofit2.http.Part;
import retrofit2.http.Path;
import retrofit2.http.Query;

/**
 * Created by Administrator on 2016/2/24.
 */
public interface RetrofitInterface<T> {


    //<editor-fold desc="注册 登录 找回密码">
    // 发送注册短信
    @POST("api/app/appCall")
    Call<HttpResult<MobileCode>> getRegMobileCode(
            @Query("jsonParam") String jsonParam
    );

    // 验证短信验证码
    @POST("api/app/appCall")
    Call<HttpResult<String>> checkRegMobileCode(
            @Query("jsonParam") String jsonParam
    );


    // 注册会员
    @POST("api/app/appCall")
    Call<HttpResult<String>> customerRegister(
            @Query("jsonParam") String jsonParam
    );

    // 个人用户登录
    @POST("api/app/appCall")
    Call<HttpResult<LoginBean>> customerToLogin(
            @Query("jsonParam") String jsonParam
    );

    // 企业客户登录
    @POST("api/app/appCall")
    Call<HttpResult<LoginBean>> companyUserToLogin(
            @Query("jsonParam") String jsonParam
    );

    // 微信登录
    @POST("api/app/appCall")
    Call<HttpResult<LoginBean>> wechatLogin(
            @Query("jsonParam") String jsonParam
    );

    // 微信账号绑定手机号，发送验证码 getMobileCodeForWeChat
    @POST("api/app/appCall")
    Call<HttpResult<MobileCode>> getMobileCodeForWeChat(
            @Query("jsonParam") String jsonParam
    );

    // 微信账号绑定手机号，检验验证码 validateMobileCodeForWeChat
    @POST("api/app/appCall")
    Call<HttpResult<String>> validateMobileCodeForWeChat(
            @Query("jsonParam") String jsonParam
    );

    // 微信账号绑定手机号 wechatBindAndLogin
    @POST("api/app/appCall")
    Call<HttpResult<LoginBean>> wechatBindAndLogin(
            @Query("jsonParam") String jsonParam
    );

    // wechatRegistAndLogin
    @POST("api/app/appCall")
    Call<HttpResult<String>> wechatRegistAndLogin(
            @Query("jsonParam") String jsonParam
    );

    //qq登录
    @POST("api/app/appCall")
    Call<HttpResult> qqLogin(
            @Query("jsonParam") String jsonParam
    );

    // 退出登录
    @POST("api/app/appCall")
    Call<HttpResult<String>> logout(
            @Query("jsonParam") String jsonParam
    );

    // 找回密码获取验证码
    @POST("api/app/appCall")
    Call<HttpResult<MobileCode>> getFindPwdCode(
            @Query("jsonParam") String jsonParam
    );

    // 验证找回密码的验证码是否正确
    @POST("api/app/appCall")
    Call<HttpResult<String>> checkFindPwdCode(
            @Query("jsonParam") String jsonParam
    );

    // 重置密码
    @POST("api/app/appCall")
    Call<HttpResult<String>> resetCustomerPwd(
            @Query("jsonParam") String jsonParam
    );
    //</editor-fold>

    // 获取会员信息
    @POST("api/app/appCall")
    Call<HttpResult<CustomInfo>> getCustomerInfo(
            @Query("jsonParam") String jsonParam
    );

    // 首页获取城市广告
    @POST("api/app/appCall")
    Call<HttpResult<CityAdWrapperBean>> getAdvertByCity(
            @Query("jsonParam") String jsonParam
    );

    // 首页获取酒店广告
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<AdHotelBean>>> getHotelBanner(
            @Query("jsonParam") String jsonParam
    );

    // 根据定位获取酒店
    @POST("api/app/appCall")
    Call<HttpResult<NearbyHotelWrapperBean>> getNearbyHotel(
            @Query("jsonParam") String jsonParam
    );

    // 创建二维码支付信息
    @POST("api/app/appCall")
    Call<HttpResult<AddQrCodePayBean>> addQrCodePay(
            @Query("jsonParam") String jsonParam
    );

    // 生成扫一扫支付的  微信预订单
    @POST("api/app/appCall")
    Call<HttpResult<WxPrepayBean>> wxQrCodePay(
            @Query("jsonParam") String jsonParam
    );

    // 生成扫一扫支付的  支付宝预订单
    @POST("api/app/appCall")
    Call<HttpResult<AliOrderBean>> zfbQrCodePay(
            @Query("jsonParam") String jsonParam
    );


    // app启动页获取图片
    @POST("api/app/appCall")
    Call<HttpResult> getStartPicturePath(
            @Query("jsonParam") String jsonParam
    );


    // 获取酒店列表 getHotelList
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<HotelListItemBean>>> getHotelList(
            @Query("jsonParam") String jsonParam
    );

    // 获取等待时间
    @POST("api/app/appCall")
    Call<HttpResult<WaitCheckOutTimeBean>> getWaitCheckOutTime(
            @Query("jsonParam") String jsonParam
    );

    // 获取酒店电话与订单自动确定时间
    @POST("api/app/appCall")
    Call<HttpResult<HotelMobileAndTime>> getHotelMobileAndTime(
            @Query("jsonParam") String jsonParam
    );

    // 生成账单，也就是将房态改为  待退款
    @POST("api/app/appCall")
    Call<HttpResult<String>> genOrderRefund(
            @Query("jsonParam") String jsonParam
    );


    // 获取我的会员卡列表 getCustomerCardList
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<MemberCardItemBean>>> getCustomerCardList(
            @Query("jsonParam") String jsonParam
    );

    // 获取会员卡详情
    @POST("api/app/appCall")
    Call<HttpResult<MemberCardItemBean>> getCustomerCardDetail(
            @Query("jsonParam") String jsonParam
    );

    // 获取会员卡详情列表
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<MemberCardDetailItemBean>>> getCustomerCardIntegralLog(
            @Query("jsonParam") String jsonParam
    );

    // 获取积分列表
    @POST("api/app/appCall")
    Call<HttpResult<IntegralBean<IntegralItemBean>>> getUserIntegralList(
            @Query("jsonParam") String jsonParam
    );

    // 设置页面
    // 设置头像
    @POST("api/app/appCall")
    Call<HttpResult<String>> saveCustomerHeadImg(
            @Query("jsonParam") String jsonParam
    );

    // 设置会员昵称 和 性别
    @POST("api/app/appCall")
    Call<HttpResult<String>> updateCustomerInfo(
            @Query("jsonParam") String jsonParam
    );

    // 设置手机
    // 获取绑定手机的验证码
    @POST("api/app/appCall")
    Call<HttpResult<MobileCode>> getBindMobileCode(
            @Query("jsonParam") String jsonParam
    );

    // 获取绑定手机的验证码
    @POST("api/app/appCall")
    Call<HttpResult<String>> checkBindMobileCode(
            @Query("jsonParam") String jsonParam
    );

    // 获取新绑定手机的验证码
    @POST("api/app/appCall")
    Call<HttpResult<MobileCode>> getBindNewMobileCode(
            @Query("jsonParam") String jsonParam
    );

    // 修改绑定手机   // 暂时不通
    @POST("api/app/appCall")
    Call<HttpResult<String>> saveBindMobile(
            @Query("jsonParam") String jsonParam
    );

    // 绑定邮箱
    @POST("api/app/appCall")
    Call<HttpResult<String>> addCustomerEmail(
            @Query("jsonParam") String jsonParam
    );

    // 我的系统消息列表
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<MessageItem>>> getSysMessageList(
            @Query("jsonParam") String jsonParam
    );

    // 获取消息详情
    @POST("api/app/appCall")
    Call<HttpResult<SysMessageDetailBean>> getSysMessageDetail(
            @Query("jsonParam") String jsonParam
    );

    // 获取订单列表
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<RoomOrderItembean>>> getRoomOrderList(
            @Query("jsonParam") String jsonParam
    );

    // getRoomOrderDetail  获取订单详情
    @POST("api/app/appCall")
    Call<HttpResult<Object>> getRoomOrderDetail(
            @Query("jsonParam") String jsonParam
    );


    // 在线核帐
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<Object>>> gethzOrderList(
            @Query("jsonParam") String jsonParam
    );


    //<editor-fold desc="常用信息">
    // 常用信息
    // 旅客
    // 获取旅客列表
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<TravellerListBean>>> getPassangerList(
            @Query("jsonParam") String jsonParam
    );

    // 新增旅客信息
    @POST("api/app/appCall")
    Call<HttpResult<String>> addPassanger(
            @Query("jsonParam") String jsonParam
    );

    // 获取旅客个人信息 getPassangerDetail
    @POST("api/app/appCall")
    Call<HttpResult<TravellerInfoBean>> getPassangerDetail(
            @Query("jsonParam") String jsonParam
    );

    // 保存旅客信息 updatePassanger
    @POST("api/app/appCall")
    Call<HttpResult<String>> updatePassanger(
            @Query("jsonParam") String jsonParam
    );

    // 删除旅客信息 delPassanger
    @POST("api/app/appCall")
    Call<HttpResult<String>> delPassanger(
            @Query("jsonParam") String jsonParam
    );

    // 旅客身份认证 authPassangerInfo
    @POST("api/app/appCall")
    Call<HttpResult<String>> authPassangerInfo(
            @Query("jsonParam") String jsonParam
    );


    // 地址
    // 查看地址列表
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<AddressListBean>>> getCustomerAddressList(
            @Query("jsonParam") String jsonParam
    );

    // 新增地址信息
    @POST("api/app/appCall")
    Call<HttpResult<String>> addCustomerAddress(
            @Query("jsonParam") String jsonParam
    );

    // 获取地址详细信息
    @POST("api/app/appCall")
    Call<HttpResult<AddressInfoBean>> getCustomerAddressDetail(
            @Query("jsonParam") String jsonParam
    );

    // 保存地址信息updateCustomerAddress
    @POST("api/app/appCall")
    Call<HttpResult<String>> 保存地址信息updateCustomerAddress(
            @Query("jsonParam") String jsonParam
    );

    // 删除地址信息 delCustomerAddress
    @POST("api/app/appCall")
    Call<HttpResult<String>> delCustomerAddress(
            @Query("jsonParam") String jsonParam
    );


    // 联系人
    // 联系人列表
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<ContactBean>>> getMemberContactList(
            @Query("jsonParam") String jsonParam
    );

    // 新增联系人
    @POST("api/app/appCall")
    Call<HttpResult> addMemberContact(
            @Query("jsonParam") String jsonParam
    );

    // 获取联系人详情 getMemberContactDetail
    @POST("api/app/appCall")
    Call<HttpResult<ContactInfoBean>> getMemberContactDetail(
            @Query("jsonParam") String jsonParam
    );

    // 保存联系人 updateMemberContact
    @POST("api/app/appCall")
    Call<HttpResult<String>> updateMemberContact(
            @Query("jsonParam") String jsonParam
    );

    // 删除联系人 delMemberContact
    @POST("api/app/appCall")
    Call<HttpResult<String>> delMemberContact(
            @Query("jsonParam") String jsonParam
    );


    // 发票管理
    // 发票列表
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<ReceiptBean>>> getMemberInvoiceList(
            @Query("jsonParam") String jsonParam
    );

    // 新增发票
    @POST("api/app/appCall")
    Call<HttpResult> addMemberInvoice(
            @Query("jsonParam") String jsonParam
    );

    //获取发票详细信息 getMemberInvoiceDetail
    @POST("api/app/appCall")
    Call<HttpResult<ReceiptInfoBean>> getMemberInvoiceDetail(
            @Query("jsonParam") String jsonParam
    );

    //保存发票信息 updateMemberInvoice
    @POST("api/app/appCall")
    Call<HttpResult> updateMemberInvoice(
            @Query("jsonParam") String jsonParam
    );

    //删除发票信息 delMemberInvoice
    @POST("api/app/appCall")
    Call<HttpResult> delMemberInvoice(
            @Query("jsonParam") String jsonParam
    );
    //</editor-fold>

    // 生成入住订单测试数据
    @GET("genOrder/{phone}/{roomNumber}/3c7141fff44a4606b78622ea9f505b4a/731442f18425499b8aa0b05e4fa2d096")
    Call<HttpResult<Object>> addTestData(
            @Path("phone") String phoneNum,
            @Path("roomNumber") String roomNumber
    );

    // 首页
    // 入住
    // 预订单列表
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<CheckInItemBean>>> getCustomerReserveOrderList(
            @Query("jsonParam") String jsonParam
    );

    // 预订单查询
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<CheckInItemBean>>> searchCustomerReserveOrderList(
            @Query("jsonParam") String jsonParam
    );

    // 办理入住的详细信息checkIn
    @POST("api/app/appCall")
    Call<HttpResult<CheckInDetailBean>> checkIn(
            @Query("jsonParam") String jsonParam
    );

    //自助选房列表toChooseRoom
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<SelectHomeItemBean>>> toChooseRoom(
            @Query("jsonParam") String jsonParam
    );

    // 预订单支付 toOrderPay   用来获取订单编号、支付单号、支付金额等
    @POST("api/app/appCall")
    Call<HttpResult<OrderBean>> toOrderPay(
            @Query("jsonParam") String jsonParam
    );

    /**
     * 微信支付流程：
     * 1、 商户调用微信服务器，下预订单
     * 2、 客户端进行支付。微信SDK 返回支付结果
     * 3、 微信服务器通知商户服务器
     * 4、 客户端到商户服务器查询是否支付成功。（本次流程，此步略过）
     *
     * @param jsonParam
     * @return
     */
    // 微信预订单支付 getOrderWeixinPayInfo
    @POST("api/app/appCall")
    Call<HttpResult<WxPrepayBean>> getOrderWeixinPayInfo(
            @Query("jsonParam") String jsonParam
    );

    // Alipay预订单支付 getOrderAliPayInfo
    @POST("api/app/appCall")
    Call<HttpResult<AliOrderBean>> getOrderAliPayInfo(
            @Query("jsonParam") String jsonParam
    );


    // 获取可选择酒店信息  getOrderDetail
    @POST("api/app/appCall")
    Call<HttpResult<SelectHomeOrderDetailBean>> getOrderDetail(
            @Query("jsonParam") String jsonParam
    );

    // 获取可选择酒店信息中符合条件的房间号 getOptionalRoomList
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<SelectHomeDetailItemBean>>> getOptionalRoomList(
            @Query("jsonParam") String jsonParam
    );

    // 选择酒店  chooseRoom
    @POST("api/app/appCall")
    Call<HttpResult<SaveOrderResultBean>> chooseRoom(
            @Query("jsonParam") String jsonParam
    );


    //<editor-fold desc="退房">
    // 退房订单列表
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<CheckoutItemBean>>> getCustomerChekOutOrderList(
            @Query("jsonParam") String jsonParam
    );

    // 结算发票保存
    @POST("api/app/appCall")
    Call<HttpResult<String>> saveOrderInvoice(
            @Query("jsonParam") String jsonParam
    );

    // 退房
    @POST("api/app/appCall")
    Call<HttpResult<String>> chekOutOrder(
            @Query("jsonParam") String jsonParam
    );

    // 退房订单详情
    @POST("api/app/appCall")
    Call<HttpResult<CheckOutBean>> getCustomerChekOutOrderDetail(
            @Query("jsonParam") String jsonParam
    );

    // 订单退款
    @POST("api/app/appCall")
    Call<HttpResult<String>> roomOrderRefund(
            @Query("jsonParam") String jsonParam
    );

    // 评价接口
    @POST("api/app/appCall")
    Call<HttpResult<JudgeWrapperBean>> roomOrderAppraise(
            @Query("jsonParam") String jsonParam
    );

    // 保存评价
    @POST("api/app/appCall")
    Call<HttpResult<ListResult>> saveOrderAppraise(
            @Query("jsonParam") String jsonParam
    );

    // 评价成功接口
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<JudgeSuccessItemBean>>> getOrderAppraiseSuccessList(
            @Query("jsonParam") String jsonParam
    );

    // 打赏付款
    @POST("api/app/appCall")
    Call<HttpResult<ToTipPayBean>> toTipPay(
            @Query("jsonParam") String jsonParam
    );


    // 生成打赏支付的  微信预订单
    @POST("api/app/appCall")
    Call<HttpResult<WxPrepayBean>> getOpenSignTipOrderInfo(
            @Query("jsonParam") String jsonParam
    );

    // 生成打赏支付的  支付宝预订单
    @POST("api/app/appCall")
    Call<HttpResult<AliOrderBean>> getTipOrderAliPay(
            @Query("jsonParam") String jsonParam
    );


    // 省市区
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<ProviceBean>>> getProvinceList(
            @Query("jsonParam") String jsonParam
    );

    // 省市区
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<CityBean>>> getCityList(
            @Query("jsonParam") String jsonParam
    );
    //</editor-fold>

    // 省市区
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<RegionBean>>> getRegionList(
            @Query("jsonParam") String jsonParam
    );

    // 上传图片 api/app/upload
    @Multipart
    @POST("api/app/upload")
    Call<HttpResult<UploadBean>> upload(
            @Part("userupfile\"; filename=\"userupfile.jpg") RequestBody file
    );

    // 上传多图片 api/app/upload
    @POST("api/app/upload")
    Call<HttpResult<UploadBean>> uploadBody(
            @Body MultipartBody body
    );


    /**
     * // 获取微信 access_token
     *
     * @param appid
     * @param secret
     * @param code
     * @param grant_type "authorization_code"
     * @return
     */
    @GET("https://api.weixin.qq.com/sns/oauth2/access_token")
    Call<WxLoginAccessTokenBean> getWxAccessToken(
            @Query("appid") String appid,
            @Query("secret") String secret,
            @Query("code") String code,
            @Query("grant_type") String grant_type
    );


    // 二期开始
    // 预订单部分
    // 常驻酒店
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<NomalBean>>> getUsuallyHotelList(
            @Query("jsonParam") String jsonParam
    );

    // 附近酒店 getNearbyHotelList
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<NearbyHotelShowModel>>> getNearbyHotelList(
            @Query("jsonParam") String jsonParam
    );

    // 我选酒店
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<HotelSelectModel>>> chooseHotelList(
            @Query("jsonParam") String jsonParam
    );

    // 获取酒店信息
    @POST("api/app/appCall")
    Call<HttpResult<HotelInfo>> getHotelInfo(
            @Query("jsonParam") String jsonParam
    );

    //获取酒店可售房型列表
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<HotelRoomShowModel>>> getHotelAvailableRoomTypeList(
            @Query("jsonParam") String jsonParam
    );

    //获取酒店房型的基础设施
    @POST("api/app/appCall")
    Call<HttpResult<HotelRoomBaseFacilityBean>> getHotelRoomBaseFacility(
            @Query("jsonParam") String jsonParam
    );

    // 获取酒店详情/设施
    @POST("api/app/appCall")
    Call<HttpResult<HotelDetailAndDevice>> getHotelInfoAndFacility(
            @Query("jsonParam") String jsonParam
    );

    // 获取酒店评价信息
    @POST("api/app/appCall")
    Call<HttpResult<HotelCommentModel<HotelCommentShowModel>>> getHotelAppInfo(
            @Query("jsonParam") String jsonParam
    );

    // 获取酒店提问列表 getHotelQuestionList
    @POST("api/app/appCall")
    Call<HttpResult<QuestionModel<HotelQuestionShowModel>>> getHotelQuestionList(
            @Query("jsonParam") String jsonParam
    );

    // toBookOrder 预订
    @POST("api/app/appCall")
    Call<HttpResult<BookOrderModel>> toBookOrder(
            @Query("jsonParam") String jsonParam
    );

    // 生成预订单  genBookOrder
    @POST("api/app/appCall")
    Call<HttpResult<GenBookOrderModel>> genBookOrder(
            @Query("jsonParam") String jsonParam
    );

    // 预订单支付（支付宝支付）getBookOrderAliPayInfo
    @POST("api/app/appCall")
    Call<HttpResult<AliOrderBean>> getBookOrderAliPayInfo(
            @Query("jsonParam") String jsonParam
    );

    // 预订单支付（微信支付）getBookOrderWeiXinPayInfo
    @POST("api/app/appCall")
    Call<HttpResult<WxPrepayBean>> getBookOrderWeiXinPayInfo(
            @Query("jsonParam") String jsonParam
    );

    // 修改预订单(获取修改预订单的数据)
    @POST("api/app/appCall")
    Call<HttpResult<ChangeOrderBean>> toChangeBookOrder(
            @Query("jsonParam") String jsonParam
    );

    // 取消订单 cancelBookOrder
    @POST("api/app/appCall")
    Call<HttpResult<String>> cancelBookOrder(
            @Query("jsonParam") String jsonParam
    );

    // 计算差额
    @POST("api/app/appCall")
    Call<HttpResult<DiffAmountBean>> calculateDiffAmout(
            @Query("jsonParam") String jsonParam
    );


    // 保存修改订单
    @POST("api/app/appCall")
    Call<HttpResult<SaveOrderChangeBean>> changeBookOrder(
            @Query("jsonParam") String jsonParam
    );

    // 修改订单支付（支付宝支付）
    @POST("api/app/appCall")
    Call<HttpResult<AliOrderBean>> getChangeBookOrderAliPayInfo(
            @Query("jsonParam") String jsonParam
    );

    // 修改订单支付（微信支付)
    @POST("api/app/appCall")
    Call<HttpResult<WxPrepayBean>> getChangeBookOrderWeiXinPayInfo(
            @Query("jsonParam") String jsonParam
    );


    /**
     * 通过预订码查询 ydCodeCustomerReserveOrderList
     * <p>
     * {@link RetrofitInterface#getCustomerReserveOrderList(String)}     查询入住订单
     * {@link RetrofitInterface#searchCustomerReserveOrderList(String)}  通过手机号查询
     *
     * @return
     */
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<CheckInItemBean>>> ydCodeCustomerReserveOrderList(
            @Query("jsonParam") String jsonParam
    );


    /**
     * 获取酒店服务设施
     * @param jsonParam
     * @return
     */
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<HotelFacilityShowModel>>> getHotelFacilityTypes(
            @Query("jsonParam") String jsonParam
    );

    /**
     * 获取酒店设施详情
     * @param jsonParam
     * @return
     */
    @POST("api/app/appCall")
    Call<HttpResult<HotelFacilityInfoBean>> getHotelFacilitiesDetails(
            @Query("jsonParam") String jsonParam
    );

    /**
     * 获取好客币
     * @param jsonParam
     * @return
     */
    @POST("api/app/appCall")
    Call<HttpResult<CustomerHkGoldBean>> getCustomerHkGold(
            @Query("jsonParam") String jsonParam
    );

    /**
     * 获取好客币兑换记录
     * @param jsonParam
     * @return
     */
    @POST("api/app/appCall")
    Call<HttpResult<ListResult<ExchangeRecordsBean>>> getExchangeRecords(
            @Query("jsonParam") String jsonParam
    );

    /**
     * 去兑换好客币
     * @param jsonParam
     * @return
     */
    @POST("api/app/appCall")
    Call<HttpResult<ToExchangeHkGoldBean>> toExchangeHkGold(
            @Query("jsonParam") String jsonParam
    );

    /**
     * 兑换好客币
     * @param jsonParam
     * @return
     */
    @POST("api/app/appCall")
    Call<HttpResult<Object>> exchangeHkGold(
            @Query("jsonParam") String jsonParam
    );

    /**
     * 获取酒店二维码信息
     * @param jsonParam
     * @return
     */
    @POST("api/app/appCall")
    Call<HttpResult<HotelQrCodeInfoBean>> getHotelQrCodeInfo(
            @Query("jsonParam") String jsonParam
    );

    /**
     * 意见反馈
     * @param jsonParam
     * @return
     */
    @POST("api/app/appCall")
    Call<HttpResult<Object>> saveFeedBack(
            @Query("jsonParam") String jsonParam
    );


    /**
     * 获取会员卡福利
     * @param jsonParam
     * @return
     */
    @POST("api/app/appCall")
    Call<HttpResult<CustomerCardDiscountBean>> getCardDiscountInfo(
            @Query("jsonParam") String jsonParam
    );




}
